extends TileMapLayer

@onready var player: CharacterBody2D = $"../邮车"
@export var tile_length: float = 768.0  # 瓦片横向长度（和瓦片尺寸一致）
@export var max_visible_tiles: int = 15  # 屏幕内保留的最大瓦片数（避免内存占用）
@export var tile_index: int = 0  # 瓦片在 TileSet 中的索引（默认 0，若多个瓦片需调整）

var current_center_tile: int = 0  # 当前玩家所在的中心瓦片索引

func _process(delta):
	if not player:
		print("找不到节点")
		return
	# 计算玩家当前对应的瓦片索引（x 轴方向，y 轴固定马路高度）
	
	var player_tile_x = floor(player.position.x / tile_length)
	# 当玩家移动超过 1 个瓦片距离时，更新瓦片
	if abs(player_tile_x - current_center_tile) > 1:
		current_center_tile = player_tile_x
		refresh_road_tiles()

func refresh_road_tiles():
	print("更新瓦片")
	# 清除当前图层所有旧瓦片
	#clear()
	# 在玩家前后生成指定数量的瓦片（比如前后各 7 个，共 15 个，覆盖屏幕）
	for offset in range(int(-max_visible_tiles / 2), int(max_visible_tiles / 2) + 1):
		var tile_grid_pos = Vector2i(current_center_tile + offset, 0)  # y=0 固定马路高度
		# 放置瓦片：参数（网格位置，瓦片索引，瓦片源索引（默认 0））
		set_cell(tile_grid_pos, tile_index, Vector2i(0, 19))
		#print("放置瓦片")
